Ruby でエクセルファイルを生成したいときに使う axlsx gem
2024/4/17
Ruby でエクセルファイルを生成したいときの一つの手段としてとして axlsx という gem を使うというのがある
他には spreadsheet gem とか RubyXL gemなどのライブラリがある
リッチに作りたいときはこの gem が選ばれがち(のはず)
色々できるはずんだけど、その分たくさんクラスが生えてて何から何までできるのか追いづらい
最近だとエクセルに保護設定を入れるときのやり方を調べてた
code:ruby
p = Axlsx::Package.new
p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
# シート全体に保護設定をかける
sheet.sheet_protection.password = 'password'
# 保護設定がかかったのでデフォルトでセルにロックがかかる
# 個別のセルのロックだけ解除したい時はスタイルを適用する
sheet.add_row 4, 5, 6, style: sheet.styles.add_style(locked: false) end
Ruby の中でエクセルを組み上げていくの、セルの追加とスタイルの適用を繰り返して積み上げていくという地道で長いコードにどうしてもなってしまうのかなあとなる。既存のコードで長い処理を見つけたときに読み解くのに心が折れがち
↑のやつも、locked: true がデフォルトのスタイルとして適用されていることが初見だとわかりづらいなあとなる。 locked: false となってるところでおや?となる気はするけど、ちょっと読み解き力が必要な気はする
スタイルの変数名に locked_header_style unlocked_header_styleとか名付けとくのもありかもだが、それでいいかは自信もてなさがある